<html>
<head>
  <title>GraphML Change Log</title>
  <link rel="stylesheet" type="text/css" href="doc/graphml.css"/>
</head>
<body>

<h1>GraphML Change Log</h1>
<h1>11/04/2009: GraphML 3.2 - Changes Since 3.1</h1>
<h2>New Features</h2>
<ul> 
  <li>GraphML 3.2 fixes compatibility issues with yFiles for java 2.7. Note that this version is <b>not compatible</b> with
  yFiles 2.6 or earlier.</li>
  <li>The following new features of yFiles 2.7 are <b>not supported</b>:
    <ul>
      <li>
        Serialization and deserialization of style properties of <a href="doc/api/y/view/GenericNodeRealizer.html">GenericNodeRealizer</a> and <a href="doc/api/y/view/GenericEdgeRealizer.html">GenericEdgeRealizer</a>.
      </li>
      <li>
        Serialization and deserialization of <a href="doc/api/y/view/y/view/tabular/TableGroupNodeRealizer.html">TableGroupNodeRealizer</a>.
      </li>
      <li>
        Serialization and deserialization of custom node and edge label models.
      </li>
    </ul>
    Support for these features is provided by the integrated GraphML support present in yFiles 2.7.
  </li>

  <li>New interfaces <code>org.graphdrawing.graphml.reader.dom.DOMGraphMLParser.HandlerProvider</code> and
    <code>org.graphdrawing.graphml.writer.DirectGraphMLWriter.HandlerProvider</code> allow for
    dynamic registration of <a href="doc/api/org/graphdrawing/graphml/reader/dom/InputHandler.html">InputHandler</a> and
    <a href="doc/api/org/graphdrawing/graphml/writer/OutputHandler.html">OutputHandler</a> instances at runtime.
  </li>
  <li>New interface <a href="doc/api/org/graphdrawing/graphml/writer/Precedence.html">Precedence</a> allows for specifying a partial order of
    <a href="doc/api/org/graphdrawing/graphml/writer/OutputHandler.html">OutputHandler</a>s when writing.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
    Fixed possible NullPointerException in <a href="doc/api/org/graphdrawing/graphml/attr/AttributeInputHandler.html">AttributeInputHandler</a> when reading empty default tags.
  </li>
  <li><a href="doc/api/yext/graphml/compat/DotnetGraphElementProvider.html">DotnetGraphElementProvider</a>: fixed incorrect handling of nested graphs.</li>
</ul>

<h2>Other Changes</h2>
<ul>
 <li><a href="doc/api/yext/graphml/compat/DotnetGraphElementFactory.html">DotnetGraphElementFactory</a>: It is possible to specify a default node size for nodes without geometry information.</li>
</ul>

<h1>06/17/2008: GraphML 3.1 - Changes Since 3.0.3</h1>
<h2>New Features</h2>
<ul>
  <li>GraphML 3.1 is fully compatible to yFiles for java 2.6</li>
  <li><a href="doc/api/yext/graphml/compat/DotnetGraphElementProvider.html">DotnetGraphElementProvider</a>: ports at the same location can optionally be merged to the same logical instance.</li>
  <li>New interfaces <a href="doc/api/org/graphdrawing/graphml/reader/ResourceDecoderProvider.html">ResourceDecoderProvider</a>, <a href="doc/api/org/graphdrawing/graphml/writer/ResourceEncoderProvider.html">ResourceEncoderProvider</a>
  and <a href="doc/api/yext/graphml/graph2D/DefaultConverterProvider.html">DefaultConverterProvider</a> allow fine tuning of shared resources like images.</li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
    Fixed possible NullPointerException in <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMGraphMLParser.html">DOMGraphMLParser</a>.
  </li>
</ul>

<h2>Other Changes</h2>
<ul>
 <li>Interface <a href="doc/api/org/graphdrawing/graphml/attr/AttributeConstants.html">AttributeConstants</a>: new constant <a href="doc/api/org/graphdrawing/graphml/attr/AttributeConstants.html#TYPE_COMPLEX">TYPE_COMPLEX</a> for compatibility with
 yFiles Flex and .NET</li>
  <li><a href="doc/api/yext/graphml/compat/DotnetGraphElementFactory.html">DotnetGraphElementFactory</a>: grouping related DataProviders are not created automatically
  if they don't exist on the target graph already. Instead, this behaviour is controlled by property
    <a href="doc/api/yext/graphml/compat/GraphMLLayoutGraphIOHandler.html#setAutoCreateGroupingDPs(boolean)">setAutoCreateGroupingDPs</a></li>
</ul>

<h1>11/26/2007: GraphML 3.0.3 - Changes Since 3.0.2</h1>
<h2>Incompatible API Changes</h2>

<p>Also see the <a href="Migration.html">Migration Guide</a> for more details on changes to 2.4 and earlier .</p>
<ul>
  <li>
  Interface <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html">XmlWriter</a>: new method
  <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html#setDTD( java.lang.String,java.lang.String)">setDTD</a> to allow the specification of a PUBLIC id for the DTD.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>Fixed poor rendering performance of inlined images for JRE &gt;= 1.6.</li>
  <li>Label model edge_opposite was not handled correctly.</li>
  <li>XML namespace for core GraphML elements is determined automatically on parsing. This fixes 
  problems with varying namespace declarations for these elements</li>
  <li>Fixed indentation problems for several XML implementations</li>
  <li>Made node order for output consistent in nested graphs</li>
  <li>Fixed broken XSL stylesheets for <a href="doc/api/yext/graphml/graph2D/XMLXSLIOHandler.html">XMLXSLIOHandler</a></li>
</ul>


<h1>09/19/2007: GraphML 3.0.2 - Changes Since 3.0.1</h1>
<h2>New Features</h2>

<ul>
  <li>Icons for labels are supported now.</li>
  <li>Icons for source and target ports are supported now.</li>
</ul>

<h2>Incompatible API Changes</h2>

<p>Also see the <a href="Migration.html">Migration Guide</a> for more details on changes to 2.4 and earlier .</p>
<ul>
  <li>
  Class <a href="doc/api/yext/graphml/graph2D/GraphicsSerializationToolkit.html">GraphicsSerializationToolkit</a>: Several methods have been deprecated and superseded
  by context aware overloads.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>Fixed invalid attribute exception when ImageNodeRealizers with active alpha channel are used.</li>
  <li><a href="doc/api/yext/graphml/graph2d/GraphMLIOHandler.html#setReadEmbeddedResources(boolean)">setReadEmbeddedResources</a>: Value has been ignored for most
  input handlers. This has been fixed.</li>
</ul>

<h1>07/24/2007: GraphML 3.0.1 - Changes Since 3.0</h1>

<h2>New Features</h2>

<ul>
  <li>.NET compatibility classes don't depend on Graph2D anymore.</li>
  <li>A custom .NET compatibility io handler has been added.</li>
  <li>Several new callback methods have been added to <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>
  for easier customization</li>
</ul>

<h2>Incompatible API Changes</h2>

<p>Also see the <a href="Migration.html">Migration Guide</a> for more details on changes to 2.4 and earlier .</p>
<ul>
  <li>
  Interface <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html">XmlWriter</a>: new methods 
  <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html#writeAttribute( java.lang.String,boolean)">writeAttribute</a> and
  <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html#writeDocumentFragment(org.w3c.dom.DocumentFragment frag)">writeDocumentFragment</a>
  </li>
</ul>


<h2>Other Changes</h2>
<ul>
 <li>Classes in <a href="doc/api/yext/graphml/graph2D/package-summary.html">yext.graphml.graph2D</a> don't throw exceptions when used together
 with other <a href="doc/api/y/base/Graph.html">Graph</a> implementations than Graph2D.</li>
 <li>Default RealizerSerializers can be retrieved through
 <a href="doc/api/yext/graphml/graph2D/RealizerSerializerManager.html#getFallbackRSM()">getFallbackRSM</a>.</li>
 <li>Added convenience method <a href="doc/api/org/graphdrawing/graphml/writer/DirectGraphMLWriter.html#addNamespace(java.lang.String,java.lang.String)">addNamespace</a>.</li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
      <a href="doc/api/org/graphdrawing/graphml/attr/AttributeOutputHandler.html">AttributeOutputHandler</a> writes an empty element when null values
      are encountered.
  </li>
  <li>Added workaround for wrong yFiles extension namespace that has been written by some GraphML releases.</li>
  <li>Invisible line color for edges was not parsed correctly</li>
  <li>Attributes with same name, but different scopes are now handled correctly</li>
</ul>

<h1>05/30/2007: GraphML 3.0 - Changes Since 2.4.2</h1>

<h2>New Features</h2>

<ul>
  <li>New interface <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html">XmlWriter</a> for structured XML output.</li>
  <li>Support for embedded resources, used in class <a href="doc/api/yext/graphml/graph2D/ImageNodeRealizerSerializer.html">ImageNodeRealizerSerializer</a>.</li>
  <li>Support for element ID persistence through interfaces <a href="doc/api/org/graphdrawing/graphml/reader/IdAcceptor.html">IdAcceptor</a>
    and <a href="doc/api/org/graphdrawing/graphml/writer/IdProvider.html">IdProvider</a>.
  </li>
  <li><a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a> now supports instance specific registration of
    <code>RealizerSerializers</code>.
  </li>
  <li>Support for .NET style layout information in package <a href="doc/api/yext/graphml/compat/package-summary.html">yext.graphml.compat</a>.</li>
  <li>Framework support for <code>&lt;port&gt;</code> elements.</li>
  <li>Support for <code>&lt;graphml&gt;</code> and <code>&lt;port&gt;</code> scopes.</li>
  <li>Fine grained error handling through interfaces <a href="doc/api/org/graphdrawing/graphml/reader/GraphMLParseErrorHandler.html">GraphMLParseErrorHandler</a>
    and <a href="doc/api/org/graphdrawing/graphml/writer/GraphMLWriteErrorHandler.html">GraphMLWriteErrorHandler</a>, together with exception nesting in
    <a href="doc/api/org/graphdrawing/graphml/reader/GraphMLParseException.html">GraphMLParseException</a>.
  </li>
  <li>Classes <a href="doc/api/org/graphdrawing/graphml/reader/GraphMLParseContext.html">GraphMLParseContext</a> and
    <a href="doc/api/org/graphdrawing/graphml/writer/GraphMLWriteContext.html">GraphMLWriteContext</a> implement
    new interface <a href="doc/api/org/graphdrawing/graphml/util/Lookup.html">Lookup</a>, which allows to carry arbitrary information through the
    (de)serialization process.
  </li>
  <li>Much more namespace awareness.</li>
  <li>Precedence for <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMInputHandler.html">DOMInputHandler</a> is now used for all scopes.</li>
  <li><a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>: new properties for the new features, overloads for <code>read</code>
    and <code>write</code> methods to read/write to different data sources/targets.
  </li>
  <li>
    The schema definition has been updated to reflect the aforementioned changes
    and additions.
  </li>
</ul>

<h2>Incompatible API Changes</h2>

<p>Also see the <a href="Migration.html">Migration Guide</a> for more details on these changes.</p>
<ul>
  <li>
    Class <code>org.graphdrawing.graphml.writer.IndentPrintWriter</code> has been removed and replaced by interface
    <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html">XmlWriter</a>.
  </li>
  <li>
    Interface <a href="doc/api/org/graphdrawing/graphml/writer/OutputHandler.html">OutputHandler</a> and implementing classes:
    <ul>
      <li>Methods <code>getKeyAttributes</code>,
        <code>getDataAttributes</code> replaced by
        <a href="doc/api/org/graphdrawing/graphml/writer/OutputHandler.html#printKeyAttributes(org.graphdrawing.graphml.writer.GraphMLWriteContext,org.graphdrawing.graphml.writer.XmlWriter)">printKeyAttributes</a> and 
        <a href="doc/api/org/graphdrawing/graphml/writer/OutputHandler.html#printDataAttributes(org.graphdrawing.graphml.writer.GraphMLWriteContext,org.graphdrawing.graphml.writer.XmlWriter)">printDataAttributes</a>, respectively.
      </li>
      <li>
        All method signatures have been changed to <code>org.graphdrawing.graphml.writer.GraphMLWriteContext</code>,
        <code>org.graphdrawing.graphml.writer.XmlWriter</code> and <code>void</code> return value.
      </li>
    </ul>
  </li>
  <li>Class <a href="doc/api/yext/graphml/writer/AbstractOutputHandler.html">AbstractOutputHandler</a>: Changed signature of
    <a href="doc/api/yext/graphml/writer/AbstractOutputHandler.html#printDataOutput(org.graphdrawing.graphml.writer.GraphMLWriteContext,y.base.Graph,java.lang.Object,org.graphdrawing.graphml.writer.XmlWriter)">printDataOutput</a>.
  </li>
  <li>Interface <a href="doc/api/org/graphdrawing/graphml/writer/XMLAttributesProvider.html">XMLAttributesProvider</a>: All <code>getXXXAttributes</code> methods
    replaced by corresponding
    <code>printXXXAttributes</code> methods.
  </li>
  <li>Interface <a href="doc/api/org/graphdrawing/graphml/reader/dom/XMLAttributesParser.html">XMLAttributesParser</a>: Added method
    <a href="doc/api/org/graphdrawing/graphml/reader/dom/XMLAttributesParser.html#parsePortAttributes(org.graphdrawing.graphml.writer.GraphMLWriteContext,org.graphdrawing.graphml.writer.XmlWriter)">parsePortAttributes</a>.
  </li>
  <li>Class <a href="doc/api/yext/graphml/graph2D/GraphicsSerializationToolkit.html">GraphicsSerializationToolkit</a>: All signatures that used <code>org.graphdrawing.graphml.writer.IndentPrintWriter</code>
    now use <a href="doc/api/org/graphdrawing/graphml/writer/XmlWriter.html">XmlWriter</a> instead.
  </li>
  <li>Interface <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html">GraphElementProvider</a>:
    <ul>
      <li>Indexed access to graph elements in methods <code>getNodeObject(int)</code>, <code>getEdgeObject(int)</code>,
        <code>getHyperEdgeObject(int)</code>, <code>getEndpoint(java.lang.Object, int)</code>
        has been replaced by iterators <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getNodeObjects()">getNodeObjects</a>, <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getEdgeObjects()">getEdgeObjects</a>, <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getHyperEdgeObjects()">getHyperEdgeObjects</a>,
        <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getEndpointObjects(java.lang.Object)">getEndpointObjects</a>.
      </li>
      <li>
        New methods <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getSourcePort(java.lang.Object)">getSourcePort</a>, <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getTargetPort(java.lang.Object)">getTargetPort</a>,
        <a href="doc/api/org/graphdrawing/graphml/writer/GraphElementProvider.html#getPortObjects(java.lang.Object)">getPortObjects</a>.
      </li>
    </ul>
  </li>
  <li>Interface <a href="doc/api/org/graphdrawing/graphml/reader/GraphElementFactory.html">GraphElementFactory</a>: changed signature of
    <a href="doc/api/org/graphdrawing/graphml/reader/GraphElementFactory.html#createPort(org.graphdrawing.graphml.reader.GraphMLParseContext, java.lang.Object, java.lang.String)">createPort</a>.
  </li>
  <li>Classes <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMGraphMLParser.html">DOMGraphMLParser</a> and
    <a href="doc/api/org/graphdrawing/graphml/writer/DirectGraphMLWriter.html">DirectGraphMLWriter</a>: Multiple interface
    changes to adapt for other API changes.
  </li>
  <li>Interfaces <a href="doc/api/yext/graphml/graph2D/NodeRealizerSerializer.html">NodeRealizerSerializer</a> and <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html">EdgeRealizerSerializer</a> and
    implementing classes:
    Signature changes for
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#write(y.view.EdgeRealizer,org.graphdrawing.graphml.writer.XmlWriter,org.graphdrawing.graphml.writer.GraphMLWriteContext)">write</a>
    and
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#writeAttributes(y.view.EdgeRealizer,org.graphdrawing.graphml.writer.XmlWriter,org.graphdrawing.graphml.writer.GraphMLWriteContext)">writeAttributes</a>,
    new methods <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#canHandle(org.w3c.dom.Node,org.graphdrawing.graphml.reader.GraphMLParseContext)">canHandle</a>,
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#canHandle(y.view.EdgeRealizer,org.graphdrawing.graphml.writer.GraphMLWriteContext)">canHandle</a>,
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#createRealizerInstance(org.w3c.dom.Node,org.graphdrawing.graphml.reader.GraphMLParseContext)">createRealizerInstance</a>,
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#getNamespaceURI()">getNamespaceURI</a>, <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#getNamespacePrefix()">getNamespacePrefix</a>.
    The abstract base classes <a href="doc/api/yext/graphml/graph2D/AbstractNodeRealizerSerializer.html">AbstractNodeRealizerSerializer</a> and
    <a href="doc/api/yext/graphml/graph2D/AbstractEdgeRealizerSerializer.html">AbstractEdgeRealizerSerializer</a> provide
    backward compatible implementations for these methods.
  </li>
  <li>
    Classes <a href="doc/api/yext/graphml/graph2D/AbstractNodeRealizerSerializer.html">AbstractNodeRealizerSerializer</a> and
    <a href="doc/api/yext/graphml/graph2D/AbstractEdgeRealizerSerializer.html">AbstractEdgeRealizerSerializer</a>: methods
    <code>setWriteSelectionStateEnabled(boolean)</code> and <code>isWriteSelectionStateEnabled(boolean)</code> have been moved to class
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>.
  </li>
  <li>Class <a href="doc/api/org/graphdrawing/graphml/reader/GraphMLParseContext.html">GraphMLParseContext</a> is now abstract.</li>
  <li>Class <a href="doc/api/yext/graphml/processor/PostprocessorOutputHandler.html">PostprocessorOutputHandler</a>: Method <code>getPostprocessorsString(y.base.Graph)</code> has
    been removed, instead call
    <a href="doc/api/yext/graphml/processor/PostprocessorOutputHandler.html#printDataOutput(org.graphdrawing.graphml.writer.GraphMLWriteContext,y.base.Graph,java.lang.Object,org.graphdrawing.graphml.writer.XmlWriter)">printDataOutput</a>
    directly.
  </li>
  <li>Class <a href="doc/api/yext/graphml/graph2D/XMLXSLIOHandler.html">XMLXSLIOHandler</a>: changed all <a href="doc/api/y/io/IOHandler.html">IOHandler</a> method parameters to
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>.
  </li>
</ul>

<h2>Deprecated Classes and Methods</h2>
<ul>
  <li>Class <a href="doc/api/yext/graphml/geom/GeomGraphMLIOHandler.html">GeomGraphMLIOHandler</a> has been deprecated.</li>
  <li>Adding a scoped <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMInputHandler.html">DOMInputHandler</a> with
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addInputHandler(org.graphdrawing.graphml.reader.dom.DOMInputHandler,int)">addInputHandler</a> has
    been deprecated.
  </li>
  <li>Class <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>: Static methods
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addEdgeRealizerSerializer(yext.graphml.graph2D.EdgeRealizerSerializer)">addEdgeRealizerSerializer</a> and
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addNodeRealizerSerializer(yext.graphml.graph2D.NodeRealizerSerializer)">addNodeRealizerSerializer</a> have been deprecated, use class
    <a href="doc/api/yext/graphml/graph2D/RealizerSerializerManager.html">RealizerSerializerManager</a>
    instead for instance specific registration. This also applies to classes
    <a href="doc/api/yext/graphml/graph2D/ReadNodeRealizerHandler.html">ReadNodeRealizerHandler</a>,
    <a href="doc/api/yext/graphml/graph2D/ReadEdgeRealizerHandler.html">ReadEdgeRealizerHandler</a>, <a href="doc/api/yext/graphml/graph2D/WriteNodeRealizerHandler.html">WriteNodeRealizerHandler</a> and
    <a href="doc/api/yext/graphml/graph2D/WriteEdgeRealizerHandler.html">WriteEdgeRealizerHandler</a>.
  </li>
</ul>

<h2>Other Changes</h2>
<ul>
  <li>
    Minimal compatible yFiles release is version 2.5
  </li>
  <li>
    Minimal compatible JDK version is 1.4
  </li>
  <li>
    Class <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMGraphMLParser.html">DOMGraphMLParser</a> as well as all <code>RealizerSerializer</code>
    implementations
    implement strict namespace handling. Therefore, documents with incorrect namespace declarations for the core GraphML
    namespace and/or
    the yFiles extensions won't be parsed correctly.
  </li>
  <li>Adding a scoped <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMInputHandler.html">DOMInputHandler</a> with
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addInputHandler(org.graphdrawing.graphml.reader.dom.DOMInputHandler,int)">addInputHandler</a> has
    been deprecated and won't
    use the scope at all. Scope filtering must now be implemented exclusively through
    <a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMInputHandler.html#acceptKey(org.w3c.dom.NamedNodeMap,int)">acceptKey</a>. The same applies to <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#getInputHandlers(int)">getInputHandlers</a>
    which has been replaced by unscoped method <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#getInputHandlers()">getInputHandlers</a>.
  </li>
  <li>By default, class <a href="doc/api/yext/graphml/graph2D/ImageNodeRealizerSerializer.html">ImageNodeRealizerSerializer</a> reads the embedded image resource if both
    resource and image URL exist. This
    behavior can be changed with <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#setReadEmbeddedResources(boolean)">setReadEmbeddedResources</a>.
  </li>
  <li>By default, <a href="doc/api/yext/graphml/graph2D/ReadNodeRealizerHandler.html">ReadNodeRealizerHandler</a> and <a href="doc/api/yext/graphml/graph2D/ReadEdgeRealizerHandler.html">ReadEdgeRealizerHandler</a>
    always parse
    realizer geometry, even if no RealizerSerializer for the XML node could be found. This can be changed by supplying
    an own
    implementation of <a href="doc/api/org/graphdrawing/graphml/reader/GraphMLParseErrorHandler.html">GraphMLParseErrorHandler</a> to
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>.
  </li>
  <li>By default, <a href="doc/api/yext/graphml/graph2D/GenericNodeRealizerSerializer.html">GenericNodeRealizerSerializer</a> and
    <a href="doc/api/yext/graphml/graph2D/GenericEdgeRealizerSerializer.html">GenericEdgeRealizerSerializer</a> use
    a default configuration if no matching configuration could be found. This can be changed by supplying an own
    implementation of <a href="doc/api/org/graphdrawing/graphml/reader/GraphMLParseErrorHandler.html">GraphMLParseErrorHandler</a> to
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>.
  </li>
  <li><a href="doc/api/org/graphdrawing/graphml/reader/dom/DOMGraphMLParser.html">DOMGraphMLParser</a> correctly handles multiple <code>&lt;data&gt;</code> tags
    with identical keys for the same attribute owner.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
    Bugfix for wrong interedges in nested graphs.
  </li>
  <li>
    Schema fixes for new attributes in yFiles 2.5.
  </li>
  <li>
    Updated included schemata to the newest version from http://graphml.graphdrawing.org.
  </li>
</ul>

<h1>03/30/2007: GraphML 2.4.2 - Changes Since 2.4.1.1</h1>

<h2>New features</h2>
<ul>
  <li>
    Compatibility release for yFiles 2.5 YLabel changes.
  </li>
</ul>
<h2>Incompatible API Changes</h2>
<ul>
  <li>The following classes which have been deprecated in previous releases have been removed:<br/>
    <code>yext.graphml.graph2D.YGraphML*</code>,
    <code>yext.graphml.graph2D.Y*Handler</code>,
    <code>yext.graphml.graph2D.ZipYGraphML*</code>,
  </li>
</ul>

<h1>10/04/2006: GraphML 2.4.1.1 - Changes Since 2.4.1</h1>

<h2>Bugfixes</h2>
<ul>
  <li>
    Fixed owl2graphml.xsl XSLT stylesheet to function with Java 5.
  </li>
</ul>

<h1>04/18/2006: GraphML 2.4.1 - Changes Since 2.4</h1>

<h2>Bugfixes</h2>
<ul>
  <li>
    Fixed wrong namespace URI for yFiles extensions in GraphML output.
  </li>
  <li>
    The GraphML schema definition files have been updated and corrected so that
    they validate with more schema validators.
  </li>
</ul>

<h1>01/12/2006: GraphML 2.4 - Changes Since 2.2.3</h1>

<h2>New Features</h2>

<p>
  Support for new node realizer features and new edge realizer found in yFiles 2.4
  has been added.
</p>
<ul>
  <li>
    Class <a href="doc/api/yext/graphml/graph2D/ImageNodeRealizerSerializer.html">ImageNodeRealizerSerializer</a> has been enhanced to
    support new <code>alphaImageUsed</code> feature of <code>y.view.ImageNodeRealizer</code>.
  </li>
  <li>
    Class <a href="doc/api/yext/graphml/graph2D/GenericEdgeRealizerSerializer.html">GenericEdgeRealizerSerializer</a> has been added.
    It handles serialization and deserialization of edge realizers of type <code>y.view.GenericEdgeRealizer</code>.
  </li>
  <li>
    Feature <code>rotationAngle</code> of node and edge labels now supports values
    of integral type or of type double.
  </li>
  <li>
    Added attribute <code>reversedPathRendering</code> to the &lt;Path> element
    of edge realizers.
  </li>
  <li>
    The schema definition has been updated to reflect the aforementioned changes
    and additions.
  </li>
  <li>
    Class <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a> now offers the methods
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addInputHandler(org.graphdrawing.graphml.reader.dom.DOMInputHandler, int)">addInputHandler</a>
    and <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addOutputHandler(org.graphdrawing.graphml.writer.OutputHandler, int)">addOutputHandler</a>
    to conveniently add subordinate input and output handlers.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
    Fixed edge creation for hierarchically organized graphs when reconstructing
    the graph structure (from a file, for example).
  </li>
</ul>

<h1>09/13/2005: GraphML 2.2.3 - Changes Since 2.2.2</h1>

<h2>Bugfixes</h2>
<ul>
  <li>
    The GraphML schema definition files have been updated and also restructured
    so that they again successfully validate.
  </li>
  <li>
    Handling of default values for GraphML attributes in hierarchically organized
    graphs has been corrected.
    Previously, the content of GraphML &lt;default> elements has been processed
    incorrectly.
  </li>
  <li>
    Transparent colors were not encoded correctly.
  </li>
</ul>

<h2>New Features</h2>
<ul>
  <li>
    Now all InputHandlers that accept a specific GraphML attribute declaration
    will be invoked to parse the corresponding data.
    Previously, at most one InputHandler was invoked to parse the data.
  </li>
  <li>
    Class <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>: added methods
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addSchemaLocation(java.lang.String, java.lang.String)">addSchemaLocation</a> and <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#addNamespace(java.lang.String, java.lang.String)">addNamespace</a>
    that allow to add user-defined namespaces and schema locations to the
    generated GraphML output.
  </li>
  <li>
    Classes <a href="doc/api/yext/graphml/graph2D/NodeRealizerSerializer.html">NodeRealizerSerializer</a> and
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html">EdgeRealizerSerializer</a>: the returned top-level
    element name can now contain a namespace declaration.
  </li>
</ul>


<h2>New Demos</h2>
<ul>
  <li>
    Demo <a href="demo/yext/graphml/BaseGraphSerializationDemo.java">BaseGraphSerializationDemo</a>
    has been added.
    It demonstrates how graphs of type other than y.view.Graph2D can be read and
    written using low-level functionality of the yFiles GraphML extension package.
  </li>
  <li>
    Demo <a href="demo/yext/graphml/CustomNodeRealizerSerializerDemo.java">CustomNodeRealizerSerializerDemo</a>
    has been added which presents
    It demonstrates how graphs of type other than y.view.Graph2D can be read and
    written using low-level functionality of the yFiles GraphML extension package.
  </li>
  <li>
    Sample graphs have been added to many existing demos.
  </li>
</ul>

<h1>07/11/2005: GraphML 2.2.2 - Changes Since 2.2.1</h1>

<h2>New Features</h2>
<ul>
  <li>
    Added attribute <code>hasColor</code> to the &lt;Fill> element to allow specification
    of no fill color.
  </li>
  <li>
    Added attribute <code>hasColor</code> to the &lt;BorderStyle> element to allow
    specification of no border color.
  </li>
  <li>
    Added attribute <code>hasColor</code> to the &lt;LineStyle> element to allow
    specification of no line color.
  </li>
  <li>
    Class <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html">GraphMLIOHandler</a>: added factory method
    <a href="doc/api/yext/graphml/graph2D/GraphMLIOHandler.html#createDirectGraphMLWriter()">createDirectGraphMLWriter</a> that allows subsclasses to customize
    the DirectGraphMLWriter instance internally used for serialization.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
    Value of node realizer attribute <code>transparent</code> was not correctly deserialized.
  </li>
  <li>
    Class <a href="doc/api/yext/graphml/reader/AttrDataAcceptorInputHandler.html">AttrDataAcceptorInputHandler</a>: fixed faulty
    initialization of attributes of type boolean.
  </li>
</ul>

<h1>03/30/2005: GraphML 2.2.1 - Changes Since 2.2</h1>

<h2>Bugfixes</h2>
<ul>
  <li>Executables that used GraphML 2.2 required Java 5 to run.
    GraphML 2.2.1 is compatible with J2SE 1.4 again.
  </li>
</ul>
<h2>New Demos</h2>
<ul>
  <li>Demo <a href="demo/yext/graphml/GenericNodeRealizerDemo.java">
    GenericNodeRealizerDemo</a> has been added.
  </li>
</ul>

<h1>01/19/2005: GraphML 2.2 - Changes Since 2.1.1</h1>

<h2>New Graphical Attributes and Types</h2>

<p>Support for the new edge and node realizer features
  found in yFiles 2.3 has been added.
</p>
<ul>
  <li>Class <a href="doc/api/yext/graphml/graph2D/GenericNodeRealizerSerializer.html">GenericNodeRealizerSerializer</a>
    has been added. It handles <code>y.view.GenericNodeRealizer</code>.
  </li>
  <li>Class <a href="doc/api/yext/graphml/graph2D/QuadCurveEdgeRealizerSerializer.html">QuadCurveEdgeRealizerSerializer</a>
    has been added. It handles <code>y.view.QuadCurveEdgeRealizer</code>.
  </li>
  <li>Class <a href="doc/api/yext/graphml/graph2D/ShapeNodeRealizerSerializer.html">ShapeNodeRealizerSerializer</a>
    has been enhanced to handle the DropShadow attribute of
    <code>y.view.ShapeNodeRealizer</code>.
  </li>
  <li>Support for new label features
    <tt>underlinedText</tt>,
    <tt>horizontalTextPosition</tt>,
    <tt>verticalTextPosition</tt>,
    and <tt>iconTextGap</tt> has been added.
  </li>
</ul>

<h2>PortConstraint Serialization</h2>
<ul>
  <li>Class <a href="doc/api/yext/graphml/graph2D/PortConstraintInputHandler.html">PortConstraintInputHandler</a>
    has been added to read port constraint and grouping
    information associated with an edge.
  </li>
  <li>Class <a href="doc/api/yext/graphml/graph2D/PortConstraintOutputHandler.html">PortConstraintOutputHandler</a>
    has been added to write port constraint and grouping
    information associated with an edge.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>Support for attributes of type
    <a href="doc/api/org/graphdrawing/graphml/attr/AttributeConstants.html#TYPE_BOOLEAN ">TYPE_BOOLEAN </a>    has been fixed.
  </li>
</ul>

<h2>Incompatible API Changes</h2>
<ul>
  <li>
    Methods
    <a href="doc/api/yext/graphml/graph2D/NodeRealizerSerializer.html#writeAttributes(y.view.NodeRealizer, ">writeAttributes</a>    org.graphdrawing.graphml.writer.IndentPrintWriter, org.graphdrawing.graphml.writer.GraphMLWriteContext)<a href="doc/api/ .html"> </a>    and
    <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html#writeAttributes(y.view.EdgeRealizer, ">writeAttributes</a>    org.graphdrawing.graphml.writer.IndentPrintWriter, org.graphdrawing.graphml.writer.GraphMLWriteContext)<a href="doc/api/ .html"> </a>    have been added to interfaces <a href="doc/api/yext/graphml/graph2D/NodeRealizerSerializer.html">NodeRealizerSerializer</a>
    and <a href="doc/api/yext/graphml/graph2D/EdgeRealizerSerializer.html">EdgeRealizerSerializer</a>, respectively.
    Implementations of these methods allow to write custom attributes to the top
    level element of a realizer.
  </li>
</ul>

<h1>08/04/2004: GraphML 2.1.1 - Changes Since 2.1</h1>

<h2>Bugfixes</h2>
<ul>
  <li>Only the first node label of a node was serialized.
    Now, all node labels of a node will be serialized.
  </li>
  <li>Parsing of the edge label attribute
    preferredPlacement caused a NullPointerException if its
    value was unknown. Unknown values for preferredPlacement
    will now be gracefully ignored.
  </li>
</ul>

<h1>06/09/2004: GraphML 2.1 - Changes Since 2.0.2</h1>

<h2>New Postprocessor Feature</h2>
<ul>
  <li>New package <a href="doc/api/yext/graphml/processor/package-summary.html">yext.graphml.processor</a> provides parser
    extensions that allow to trigger arbitrary actions after a graph has
    been read in. Relevant parser and encoder classes are
    <a href="doc/api/yext/graphml/processor/PostprocessorInputHandler.html">PostprocessorInputHandler</a> and
    <a href="doc/api/yext/graphml/processor/PostprocessorOutputHandler.html">PostprocessorOutputHandler</a>.
  </li>
  <li>Added postprocessor actions
    <a href="doc/api/yext/graphml/processor/NodeSizeAdapter.html">NodeSizeAdapter</a> and
    <a href="doc/api/yext/graphml/processor/BackgroundConfigurator.html">BackgroundConfigurator</a>.
  </li>
  <li>Added demo
    <a href="demo/yext/graphml/PostprocessorDemo.java">
      demo.yext.graphml.PostprocessorDemo</a> that focuses on the
    new postprocessor feature.
  </li>
</ul>
<h2>New XML/XSLT Import Feature</h2>
<ul>
  <li>
    Added XSLT-based import modules to <a href="doc/api/yext/graphml/module/package-summary.html">yext.graphml.module</a>.
  </li>
  <li>
    Added demo <a href="demo/yext/graphml/XMLXSLDemo.java">
    demo.yext.graphml.XMLXSLDemo</a> that shows how to import
    arbitrary XML files by providing an XSLT stylesheet that
    transforms the XML to GraphML.
    <a href="demo/yext/graphml/resources/xsl">Sample XSLT stylesheets
    </a> that shows
    how to import Ant build scripts, OWL web ontology data, or
    the tree structure of XML files.
  </li>
</ul>

<h2>Other New Features</h2>
<ul>
  <li>
    Added interface <a href="doc/api/org/graphdrawing/graphml/reader/dom/Precedence.html">Precedence</a>
    that allows to specify the invocation precedence of
    registered DOM input handlers.
  </li>
  <li>
    The alpha component of colors can now be specified using the
    extended color format
    #rrggbbaa.
  </li>
  <li>
    The border inset of GroupNodeRealizers will now be serialized.
  </li>
  <li>
    Image icons for labels can now be handled. Specify within the NodeLabel or EdgeLabel
    the attribute &quot;icon&quot; a URL or relative path to the image resource.
  </li>
</ul>

<h2>Bugfixes</h2>
<ul>
  <li>
    Incorrect encoding and parsing of some edge and node label models
    has been fixed.
  </li>
  <li>
    Incorrect size of parsed-in folder nodes has been fixed.
  </li>
  <li>
    Incorrect parsing of edge label positions has been fixed.
  </li>
  <li>
    <a href="doc/api/yext/graphml/graph2D/ZipGraphMLIOHandler.html">ZipGraphMLIOHandler</a> was broken. Now fixed.
  </li>

</ul>

<h1>02/13/2004: GraphML 2.0.2 - Changes Since 2.0.1</h1>
<ul>
  <li>Added graph-scope attributes to GraphMLIOHandler
  </li>
  <li>Updated CustomGraphMLDemo.
  </li>
</ul>
<h1>01/12/2004: GraphML 2.0.1 - Changes Since 2.0</h1>
<ul>
  <li>Fixed some problems that occurred when serializing hierarchically grouped graphs.
  </li>
  <li>Added new demo that shows how to serialize complex data that is attached to a node.
  </li>
</ul>
<h1>12/12/2003: GraphML 2.0 - Changes Since 1.2</h1>
<ul>
  <li>New format for serialization of graphics information. Old format is deprecated. The new format is
    specified by an XML Schema.
  </li>
  <li>More comfortable handling of GraphML attributes.
  </li>
  <li>More comfortable handling of extra XML attributes for existing GraphML elements.
  </li>
  <li>Support for hierarchically grouped graphs.
  </li>
  <li>Added pluggable export modules that support the IOModule mechanism
    introduced in yFiles 2.2.
  </li>
  <li>Updated demos.
  </li>
</ul>
</body>
</html>
